<?php

/*------------------------------------------------
*
*   Explay Engine Content Management System.
*   Copyright © 2008 Golovdinov Alexander.
*
*-------------------------------------------------
*
*   Official site: wwww.alex-home.spb.ru/explay.html
*   Contact e-mail: golovdinov@gmail.com
*
*   GNU General Public License original source:
*   http://www.gnu.org/licenses/gpl-3.0.html
*
------------------------------------------------*/

if (!defined('EXPLAY')) exit;

if (is_cached ('tags.php', (3600))) $content = file_get_contents ($_SERVER['DOCUMENT_ROOT'].'/include/cache/tags.php');
else {
	$content = build_tags_content ();
	cache_file ('tags.php', $content);
}
	
	$template->set_var ('{HEADER}', $block_header);
	$template->set_var ('{NAME}', $block_name);
	$template->set_var ('{BLOCK}', $content);
	($align == 'left')
		? CORE::add_block ($template->display ('block.tpl'), 'left')
		: CORE::add_block ($template->display ('block.tpl'), 'right');

function build_tags_content () {
	global $db;
	
	$get_tags = $db->query ("SELECT art_tags FROM ".DB_PEREFIX."_articles ORDER BY art_id DESC LIMIT 0, 400");
	
	$count = $db->num_rows ($get_tags);
	
	$all_tags = '';
	$content = '';
	
	
	// Ставим все теги нижним регистром через запятую
	while (list ($tags) = $db->fetch_row ($get_tags)) {
		if (trim ($tags) != '') {
			$tag = explode (',', $tags);
			
			for ($i=0; $i<count($tag); $i++) {
				$all_tags .= str_to_lower (trim ($tag[$i])).',';
			}
		}
	}
	// Удаляем последнюю запятую
	if (substr($all_tags, strlen($all_tags)-1) == ',') $all_tags = substr($all_tags, 0, strlen($all_tags)-1);
	
	// Разбиваем теги в массив
	$tags = 0;
	$tags = explode (',', $all_tags);
	$tag_count = array ();
	$tagname = array ();
	$unique_tags = array ();
	$count = count($tags);
	
	// Вручную вычисляем уникальные теги (чтобы не повторялись при выводе, array_unique () - не работает)
	for ($i=0; $i<$count; $i++) {
		$like = 0;
		
		for ($c=0; $c<count($unique_tags); $c++) {
			if ($tags[$i] == $unique_tags[$c]) $like++;
		}
		
		if ($like == 0) array_push ($unique_tags, $tags[$i]);
	}
	
	// Считаем количество входов уникального тега в массив со всеми тегами
	for ($i=0; $i<count($unique_tags);  $i++) {
		$tag = trim ($unique_tags[$i]);
		$tag_count[$i] = 0;
		
		for ($c=0; $c<$count; $c++) {
			if ($tag == trim($tags[$c])) $tag_count[$i]++;
		}
		
		// Записываем, чтобы вначале шло количество входов тега, а затем сам тег
		$tagname[$i] = $tag_count[$i].'.'.$tag;
	}
	
	// Сортируем по количеству входов
	sort ($tagname);
	
	// Переворачиваем
	$tagname = array_reverse ($tagname);
	$tags = array ();
	
	// Оставляем 70 самых популярных ткгов
	for ($i=0; $i<count($tagname); $i++) {
		array_push ($tags, $tagname[$i]);
		if ($i == 69) break;
	}
	
	// Выстраиваем таги так, чтобы сначала шло его имя, а затем кол-во входов
	$tagname = array ();
	for ($i=0; $i<count($tags); $i++) {
		$part = explode ('.', $tags[$i]);
		array_push ($tagname, $part[1].'.'.$part[0]);
	}
	
	// Сортируем по имени
	sort ($tagname);
	
	// Разделяем теги и кол-ва их входов на два массива (для удобства)
	$tag_count = array ();
	$tag_name = array ();
	
	for ($i=0; $i<count($tagname); $i++) {
		$part = explode ('.', $tagname[$i]);
		array_push ($tag_name, $part[0]);
		array_push ($tag_count, $part[1]);
	}
	$content .= "<span class=\"cloud\">\n";
	$content .= "<div id=\"art_tags\">\n";
	
	// Выводим
	for ($i=0; $i<count($tagname); $i++) {
		$size = 31;
		
		// Сравниваем с кол-вом входов других тегов, если есть больше - уменьшаем значение размера
		for ($c=0; $c<count($tagname); $c++) {
			if ($tag_count[$i] < $tag_count[$c]) $size -= 2;
		}
		
		if ($size < 10) $size = 10;
		$content .= "\n<a href=\"/articles/?tagname=".urlencode($tag_name[$i])."\" style=\"font-size:{$size}px;\">{$tag_name[$i]}</a><sub style=\"color:rgb(228,228,228)\">".$tag_count[$i]."</sub> ";
	}
	$content .= "\n</div>\n</span>";
	
	return $content;
}
